﻿// Example header text. Can be configured in the options.
using System;
using System.Data;
using vtech_formBase;
using vtech_frameWorks.Common;
using vtech_frameWorks.Exceptions;
using vtech_system.User;

namespace vtech_system
{
    public partial class frmChangePassword : frmEdit
    {
        public frmChangePassword()
        {
            this.InitializeComponent();
        }

        private void resetText()
        {
            this.txtOldPassword.Text = "";
            this.txtNewPassword.Text = "";
            this.txtConfirmPassword.Text = "";
        }

        protected override bool CheckControl()
        {
            try
            {
                this.errorProvider.Dispose();
                if (this.txtOldPassword.Text == "")
                {
                    this.errorProvider.SetError(this.txtOldPassword, "Mật khẩu cũ không được để trống\nXin vui lòng kiểm tra lại");
                    return false;
                }
                else if (this.txtNewPassword.Text == "")
                {
                    this.errorProvider.SetError(this.txtNewPassword, "Mật khẩu mới không được để trống\nXin vui lòng kiểm tra lại");
                    return false;
                }
                else if (this.txtConfirmPassword.Text == "")
                {
                    this.errorProvider.SetError(this.txtConfirmPassword, "Xác nhận Mật khẩu không được để trống\nXin vui lòng kiểm tra lại");
                    return false;
                }
                else if (!this.txtNewPassword.Text.Trim().Equals(this.txtConfirmPassword.Text.Trim()))
                {
                    this.errorProvider.SetError(this.txtConfirmPassword, "Mật khẩu mới và xác nhận mật khẩu mới ko khớp\nXin vui lòng kiểm tra lại");
                    return false;
                }
                else
                {
                    return true;
                }
            }
            catch (Exception ex)
            {
                ClsInformation.Error(ex.ToString());
                return false;
            }
        }

        private bool checkOldPass()
        {
            try
            {
                ClsUserBS obj = new ClsUserBS();
                this.dsUser.DtUser.Clear();
                this.dsUser.DtUser.Merge(obj.GetAll());

                DataRow[] drow;
                drow = this.dsUser.DtUser.Select(string.Format("UserID = '{0}' AND Password = '{1}'", ClsGlobal.UserID, vtech_frameWorks.Library.Encryption.ClsMd5.Encrypt(this.txtOldPassword.Text.Trim(), ClsGlobal.strPrivateKey, true)));

                if (drow.Length > 0)
                {
                    return true;
                }
                return false;
            }
            catch
            {
                return false;
            }
        }

        protected override void Edit()
        {
            try
            {
                if (this.CheckControl())
                {
                    if (this.checkOldPass())
                    {
                        using (DsUser ds = new DsUser())
                        {
                            ClsUserBS obj = new ClsUserBS();
                            DataRow drow = this.dsUser.DtUser.NewRow();

                            drow["UserID"] = this.ID;
                            drow["Password"] = this.txtNewPassword.Text.Trim();
                            drow["LastChangedPassword"] = DateTime.Now;
                            ds.DtUser.Rows.Add(drow);

                            obj.DoEdit(ds.DtUser);

                            ClsInformation.Information("Đã thay đổi mật khẩu !");
                            this.Close();
                        }
                    }
                    else
                    {
                        ClsInformation.Error("Mật khẩu cũ không đúng. Hãy xác nhận lại mật khẩu cũ");
                        this.resetText();
                    }
                }
                else
                {
                    return;
                }
            }
            catch (Exception ex)
            {
                ClsInformation.Error(ex.ToString());
            }
        }
    }
}